#include <stdio.h>
#include <stdlib.h>
typedef struct LinkList
{
    int data;
    struct LinkList *next;
}LinkList,*LNode;
void InitLinkList(LNode *p,int n);
void InitLinkList(LNode *p,int n)
{
    *p=(LNode)malloc(sizeof(LinkList));
    (*p)->next=NULL;
    for(int i=0;i<n;i++)
    {
        LNode t=(LNode)malloc(sizeof(LinkList));
        if(t==NULL)
        {
            printf("ERROR");
            return;
        }
        scanf("%d",&t->data);
        t->next=(*p)->next;
        (*p)->next=t;
    }
}
void Insert(LNode p,int sort,int data);
void Insert(LNode p,int sort,int data)
{
    LNode L=p;
    int i=0;
    while(i<sort-1)
    {
        L=L->next;
        i++;
    }
    if(i>sort-1)
    {
        printf("ERROR!");
        return;
    }
    LNode s=(LNode)malloc(sizeof(LinkList));
    if(s==NULL)
        {
            printf("ERROR");
            return;
        }
    s->data=data;
    s->next=L->next;
    L->next=s;
}
void GetElem(LNode p,int sort,int *count);
void GetElem(LNode p,int sort,int *count)
{
    LNode L=p;
    int i=0;
    while(i<sort && L)
    {
        L=L->next;
        i++;
    }
    if(i>sort)
    {
        printf("ERROR!");
        return;
    }
    *count=L->data;
}
void Delete(LNode p,int sort);
void Delete(LNode p,int sort)
{
    LNode L=p;
    LNode temp=p->next;
    int i=0;
    while(i<sort-1 && temp)
    {
        L=L->next;
        temp=temp->next;
        i++;
    }
    if(temp==NULL)
    {
        printf("ERROR!");
        return;
    }
    L->next=temp->next;
    free(temp);
}
int main() 
{
    LNode p;
    int n,count;
    printf("请输入链表长度：");
    scanf("%d",&n);
    InitLinkList(&p,n);
    printf("%d",p->next->data);
    printf("%d",p->next->next->data);
    printf("%d",p->next->next->next->data);
    printf("\n");
    Insert(p,3,3);
    printf("%d",p->next->data);
    printf("%d",p->next->next->data);
    printf("%d",p->next->next->next->data);
    printf("%d",p->next->next->next->next->data);
    printf("\n");
    GetElem(p,4,&count);
    printf("%d\n",count);
    Delete(p,3);
    printf("%d",p->next->data);
    printf("%d",p->next->next->data);
    printf("%d",p->next->next->next->data);
}
